package com.wlhse.service.impl;

import com.github.pagehelper.PageHelper;
import com.wlhse.dao.CheckListDao;
import com.wlhse.dto.outDto.CheckListOutDto;
import com.wlhse.entity.CheckListPojo;
import com.wlhse.entity.DataDictPojo;
import com.wlhse.entity.JobCorrespondChecklistPojo;
import com.wlhse.service.CheckListService;
import com.wlhse.util.state_code.CodeDict;
import com.wlhse.util.state_code.NR;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.LinkedList;
import java.util.List;

@Service
public class CheckListServiceImpl implements CheckListService {
    @Resource
    private CheckListDao checkListDao;

    @Override
    public String queryCheckList(String checkListName,Integer num,Integer size) {
        //没有传checkListName就查询全部
        if (null==checkListName||"".equals(checkListName)){
            int total = checkListDao.queryCheckList().size();
            PageHelper.startPage(num,size);
            List<CheckListOutDto> checkListPojos = checkListDao.queryCheckList();
            return NR.r(checkListPojos,total,num);
        }
        //有名字可以模糊查询
        int total = checkListDao.queryCheckListByCheckListName(checkListName).size();
        PageHelper.startPage(num,size);
        List<CheckListOutDto> checkListPojos = checkListDao.queryCheckListByCheckListName(checkListName);
        return NR.r(checkListPojos,total,num);
    }

//    @Override
//    public String addCheckList(CheckListPojo checkListPojo) {
//        if ("".equals(checkListPojo.getCheckListName())){
//            return NR.r(CodeDict.INSERT_FAILE,"请输入检查表名");
//        }
//
//        checkListPojo.setStatus("启用");
//        //todo 还需设置checklistcode
//        Integer count = checkListDao.addNewCheckList(checkListPojo);
//        System.out.println(count);
//        if(count==1){
//            return NR.r();
//        }
//        return NR.r(CodeDict.INSERT_FAILE,"新增检查表失败");
//    }

    @Override
    public String updateCheckList(CheckListPojo checkListPojo) {
        CheckListPojo it = checkListDao.queryCheckListByID(checkListPojo.getCheckListID());
        if (it==null){
            return NR.r(CodeDict.UPDATE_FAILE,"请重新确认检查表ID");
        }

        Integer count = checkListDao.updateCheckList(checkListPojo);
        if(count==1){
            //还需要将checklistitem的状态修改一下
            checkListDao.updateCheckListItemStatus(checkListPojo.getCheckListID(),checkListPojo.getStatus());
            return NR.r();
        }
        return NR.r(CodeDict.INSERT_FAILE,"更新检查表状态失败");
    }

    @Override
    public String queryCheckListDictCode() {
        List<DataDictPojo> list = checkListDao.queryCheckListDictCode();
        return NR.r(list);
    }

    @Override
    public String updateCheckListDictCode(CheckListOutDto checkListOutDto) {
        //保存checklist表、只更新检查表名
        CheckListPojo checkList = checkListDao.queryCheckListByID(checkListOutDto.getCheckListID());
        checkList.setCheckListName(checkListOutDto.getCheckListName());
        checkListDao.updateCheckList(checkList);

        //保存JobCorrespondChecklist表
        List<JobCorrespondChecklistPojo> list= new LinkedList<>();
        String jobTypeCodes = checkListOutDto.getJobTypeCodeList();
        String[] jobTypeCodeList =jobTypeCodes.split(",");
        //删除所有CheckListCode为checkListOutDto.getCheckListCode()
        checkListDao.deleteByCheckListCode(checkListOutDto.getCheckListCode());
        for(String code:jobTypeCodeList){
            JobCorrespondChecklistPojo pojo =new JobCorrespondChecklistPojo();
            pojo.setJobTypeCode(code);
            pojo.setCheckListCode(checkListOutDto.getCheckListCode());
            //查到两个number的值,如果没有就从直接设置
            Integer jobs = checkListDao.queryByCheckListCode(checkListOutDto.getCheckListID());
                pojo.setEndSerialNumber(jobs);
                pojo.setStartSerialNumber(1);
            checkListDao.addJobCorrespondChecklist(pojo);
        }

        return NR.r();
    }
}
